const self = this;
function once(fn) {
  let done = false;
  return function() {
    if (!done) {
      done = true;
      return fn.apply(this, arguments);
    }
  }
}

global.a = 10;

const payFun = once(function(money) {
  console.log(`支付了${ money }元`);
});


// payFun(3);
// payFun(2);
// payFun(1);
// 在node环境下，相当于有两个全局变量，一个是全局作用域下的 this；
// 另一个是 global ，在函数内执行的 this 都会挂载在 global 下；
const obj = {
  name: '德玛西亚',
  once: function() {
    const self = this;
    return function() {
      console.log(self.name, 'this.name');
    }
  }
};

global.name = '诺克萨斯';

// obj.once()();
